Untuk menguasai siklus hidup objek C++ adalah dengan menguasai mekanisme dasar eksistensi di dalam heap dan stack. Pengendalian salinan mendefinisikan bagaimana sebuah kelas mengelola keberlangsungan hidup melalui dua operasi: yaitu konstruktor salinan dan operator penugasan salinan.
1. Inisialisasi vs. Penugasan
Inisialisasi langsung (misalnya, string dots(10, '.')) memanggil konstruktor secara langsung. Namun, inisialisasi salinan (string s2 = dots) bergantung pada konstruktor salinan. Berbeda dengan inisialisasi, penugasan (trans = accum) menimpa objek yang sudah ada menggunakan operator=. Suatu batasan penting: parameter konstruktor salinan harus berupa referensi (const Foo&); jika tidak, melewatkan argumen secara nilai akan memicu lingkaran rekursi tak terbatas pemanggilan salinan.
2. Peran Sintesis
Jika Anda tidak mendefinisikan anggota-anggota ini, kompiler menyediakan yang disintesis versi yang melakukan salinan anggota per anggota. Waspadalah: meskipun cukup untuk tipe-tipe sederhana, versi ini sering gagal untuk kelas yang mengelola memori dinamik, menyebabkan pointer yang tidak valid atau penghapusan ganda.